package com.cmc.cloud.cmclink.doc.vo.localcostratevo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.time.LocalDate;

import org.hibernate.validator.constraints.Length;
import java.math.BigDecimal;
import javax.validation.constraints.*;

/**
 * 提单本地费用费率 Base VO，提供给添加、修改、详细的子 VO 使用
 * 如果子 VO 存在差异的字段，请不要添加到这里，影响 Swagger 文档生成
 * @author codegen
 */
@Data
public class LocalCostRateBaseVO {

        @Schema(description = "港口代码", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "{LocalCostRateBaseVO.portcode.notblank}")
	@Length(max = 5,message = "{LocalCostRateBaseVO.portcode.length}")
    private String portCode;
	
        @Schema(description = "堆场和码头(可多个)")
	@Length(max = 500,message = "{LocalCostRateBaseVO.depotcodes.length}")
    private String depotCodes;
	
        @Schema(description = "供应商名称")
	@Length(max = 100,message = "{LocalCostRateBaseVO.vendor.length}")
    private String vendor;

    @Schema(description = "供应商英文名称")
    @Length(max = 200, message = "{BlnoLocalCostBaseVO.vendorcsmcode.length}")
    private String vendorNameEn;
	
        @Schema(description = "费用代码", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "{LocalCostRateBaseVO.chargecode.notblank}")
	@Length(max = 20,message = "{LocalCostRateBaseVO.chargecode.length}")
    private String chargeCode;
	
        @Schema(description = "计费维度 C=按体积吨计费 N=按箱计费 Y=按票计费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "{LocalCostRateBaseVO.per.notblank}")
	@Length(max = 1,message = "{LocalCostRateBaseVO.per.length}")
    private String per;
	
        @Schema(description = "箱型 (按票计费时为空)", example = "2")
	@Length(max = 2,message = "{LocalCostRateBaseVO.cntrtype.length}")
    private String cntrType;
	
        @Schema(description = "箱尺寸 (按票计费时为空)")
	@Length(max = 2,message = "{LocalCostRateBaseVO.cntrsize.length}")
    private String cntrSize;
	
        @Schema(description = "箱状态 (按票计费时为空) 选项：E、F", example = "1")
	@Length(max = 1,message = "{LocalCostRateBaseVO.cntrstatus.length}")
    private String cntrStatus;
	
        @Schema(description = "费率", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "{LocalCostRateBaseVO.rate.notnull}")
    private BigDecimal rate;
	
        @Schema(description = "币种", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "{LocalCostRateBaseVO.currency.notblank}")
	@Length(max = 3,message = "{LocalCostRateBaseVO.currency.length}")
    private String currency;
	
        @Schema(description = "船名代码")
	@Length(max = 50,message = "{LocalCostRateBaseVO.vesselcode.length}")
    private String vesselCode;
	
        @Schema(description = "订舱人代码")
	@Length(max = 1000,message = "{LocalCostRateBaseVO.bkpcodes.length}")
    private String bkpCodes;
	
        @Schema(description = "货类", example = "2")
	@Length(max = 5,message = "{LocalCostRateBaseVO.cargotype.length}")
    private String cargoType;
	
        @Schema(description = "运输条款")
	@Length(max = 5,message = "{LocalCostRateBaseVO.shippingterm.length}")
    private String shippingTerm;
	
        @Schema(description = "舱位代码")
	@Length(max = 5,message = "{LocalCostRateBaseVO.spaceowner.length}")
    private String spaceOwner;
	
        @Schema(description = "箱主代码")
	@Length(max = 5,message = "{LocalCostRateBaseVO.cntrowner.length}")
    private String cntrOwner;
	
        @Schema(description = "进出口类型 EX=出口 IM=进口", example = "1")
	@Length(max = 2,message = "{LocalCostRateBaseVO.imextype.length}")
    private String imExType;
	
        @Schema(description = "航线代码")
	@Length(max = 1000,message = "{LocalCostRateBaseVO.lanecodes.length}")
    private String laneCodes;
	
        @Schema(description = "路径ID", example = "25444")
    private Long routeId;
	
        @Schema(description = "开始日期", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "{LocalCostRateBaseVO.begindate.notnull}")
    private LocalDate beginDate;
	
        @Schema(description = "结束日期", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "{LocalCostRateBaseVO.enddate.notnull}")
    private LocalDate endDate;

	
}
